Computer networks have become backbones of companies throughout the world. Even if a company does not provide products or services over the internet, computer networks within the company improve employee productivity by providing employees with instantaneous access to millions of bytes of data. In fact, many companies are unable to function when the company's computer network fails. Thus, it is imperative that companies have reliable computer networks with 99.999% up time.
Conventionally, devices on a computer network function independently of each other. For example, a server may respond to requests from a client. However, if the server fails, then the client may lose access to the functionality hosted by the server. In one conventional solution, the client may be configured with addresses for a primary and a secondary server. If the client loses communication with the primary server, then the client may communicate with the secondary server to prevent loss of the functionality provided by the primary server. However, a separate configuration of each client device for each primary and secondary server is still required. This creates additional overhead in the administration of the clients. Further, there are only a finite number of configured servers for any client. That is, because the configuration data is static, the client cannot adapt quickly to failures in the network even though other resources may be available. Thus, the possibility of a failure of the primary and secondary servers that results in a loss of functionality for the client still exists.